package com.example.zq.player.linked_database_interface.base;

import com.example.zq.player.linked_database_interface.bean.MyPageInfo;
import com.example.zq.player.linked_database_interface.bean.Product;
import com.example.zq.player.linked_database_interface.bean.ProductDetail;
import com.example.zq.player.linked_database_interface.bean.User;

import java.util.Map;

import okhttp3.ResponseBody;
import retrofit2.Call;
import retrofit2.http.Field;
import retrofit2.http.FieldMap;
import retrofit2.http.FormUrlEncoded;
import retrofit2.http.GET;
import retrofit2.http.POST;

/**
 * created by Dongkai on 2018/12/5
 */

public class RequestInterface {
    /**
     * 后台url ip地址
     */
    public static final String baseIp = "120.77.253.51";
    /**
     * 后台url地址
     */
    public static final String basePath = "http://" + baseIp + ":8080/AndroidMall/";//http://120.77.253.51:8080/AndroidMall/user/login

    public static final String baseImgPath = "http://" + baseIp + ":8080/AndroidMall/img/";

    //登陆接口，使用Gson解析，也是请求单个数据的示例
    public interface LoginInterface {
        @POST("user/login")
        @FormUrlEncoded
        Call<ServerResponse<User>> login(@Field("username") String userName, @Field("password") String password);
    }

    //注册接口
    public interface RegisterInterface{
        @POST("user/register")
        @FormUrlEncoded
        Call<ServerResponse> register(@Field("username") String userName, @Field("password") String password, @Field("email") String email, @Field("phone") String phone, @Field("question") String question, @Field("answer") String answer);
    }

    //获得商品列表接口
    public interface GetProductsListInterface {
        @POST("manage/product/list")
        @FormUrlEncoded
        Call<ServerResponse<MyPageInfo<Product>>> getProductsList(@Field("pageNum") String pageNum, @Field("pageSize") String pageSize);
    }

    //根据id获取商品详细信息
    public interface GetProductDetailInterface{
        @POST("manage/product/detail")
        @FormUrlEncoded
        Call<ServerResponse<ProductDetail>> getProductDetail(@Field("productId") String productId);
    }


//    public interface GetUserInfoOnlyInterface{
//        @POST("user/get_user_info")
//        @FormUrlEncoded
//        Call<ServerResponse<User>> getUserInfoOnly(@Field("invalidInformation") String invalidInformation);
//    }

//    //以原生方式获取返回结果，不用Gson解析（在Gson解析出错的情况下，获取返回的数据进行操作（看是哪一项数据解析不了，已知Date类型不行））
//    public interface Login2 {
//        @POST("login.do")
//        @FormUrlEncoded
//        Call<ResponseBody> login(@Field("username") String userName, @Field("password") String password);
//    }


//
//    //请求数据集合的接口，使用Gson解析，其中ServerResponse<T>中的T保持和后台Controller中对应的方法保持一致
//    public interface getProductsList2 {
//        @POST("product/list.do")
//        @FormUrlEncoded
//        Call<ServerResponse<MyPageInfo<Product>>> getProducts(@Field("keyword") String keyword,
//                                                              @Field("categoryId") Integer categoryId,
//                                                              @Field("pageNum") int pageNum,
//                                                              @Field("pageSize") int pageSize,
//                                                              @Field("orderBy") String orderBy);
//    }

//    //登录状态更新个人信息接口
//    public interface UpdateUserInfo {
//        @POST("user/update_information.do")
//        @FormUrlEncoded
//        Call<ServerResponse<User>> update(@Field("email") String email, @Field("phone") String phone, @Field("question") String question, @Field("answer") String answer);
//    }

//    //忘记密码
//    public interface ForgetPassword {
//        @POST("user/forget_get_question.do")
//        @FormUrlEncoded
//        Call<ResponseBody> findBack(@Field("username") String username);
//    }
//
//    //登录状态更新个人信息接口(因为返回值不是一个对象，那么不用解析)
//    public interface Register {
//        @POST("user/register.do")
//        @FormUrlEncoded
//        Call<ResponseBody> register(@Field("username") String userName, @Field("password") String password, @Field("email") String email, @Field("phone") String phone, @Field("question") String question, @Field("answer") String answer);
//    }
//
//    //登录状态更新个人信息接口(尝试解析)
//    public interface Register2 {
//        @POST("user/register.do")
//        @FormUrlEncoded
//        Call<ServerResponse> register2(@Field("username") String userName, @Field("password") String password, @Field("email") String email, @Field("phone") String phone, @Field("question") String question, @Field("answer") String answer);
//    }
//
//    //登录状态更新个人信息接口(尝试解析)
//    public interface Address {
//        @POST("/shipping/add.do")
//        @FormUrlEncoded
//        Call<ServerResponse> add(@Field("userId") int userId,
//                                 @Field("receiverName") String receiverName,
//                                 @Field("receiverPhone") String receiverPhone,
//                                 @Field("receiverMobile") String receiverMobile,
//                                 @Field("receiverProvince") String receiverProvince,
//                                 @Field("receiverCity") String receiverCity,
//                                 @Field("receiverAddress") String receiverAddress,
//                                 @Field("receiverZip") String receiverZip
//        );
//
//        @POST("/shipping/list.do")
//        @FormUrlEncoded
//        Call<ServerResponse<MyPageInfo>> getAddressList(@Field("pageNum") int pageNum,
//                                                        @Field("pageSize") int pageSize);
//
//    }
//
//    public interface Cart {
//        //购物车List列表
//        @POST("/cart/list.do")
//        @FormUrlEncoded
//        Call<ServerResponse> getShippingList();
//
//        //购物车添加商品
//        @POST("/cart/add.do")
//        @FormUrlEncoded
//        Call<ServerResponse> add(@Field("productId") int productId,
//                                 @Field("count") int count);
//
//        //更新购物车商品数量
//        @POST("/cart/update.do")
//        @FormUrlEncoded
//        Call<ServerResponse> update(@Field("productId") int productId,
//                                    @Field("count") int count);
//        //删除购物车商品
//        @POST("/cart/delete_product.do")
//        @FormUrlEncoded
//        Call<ServerResponse> delete(@Field("productId") int productId,
//                                    @Field("count") int count);
//    }

}
